iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0

tokio::sync模塊提供了幾種狀態同步的機制:

  • Mutex: 互斥鎖
  • RwLock: 讀寫鎖
  • Notify: 通知喚醒機制
  • Barrier: 屏障
  • Semaphore: 信號量

當多個併發任務(tokio task或線程)可能會修改同一個數據時,就會出現數據競爭現象(競態),具體表現為:某個任務對該數據的修改不生效或被覆蓋。

互斥鎖的作用,就是保護併發情況下可能會出現競態的代碼,這部分代碼稱為臨界區。當某個任務要執行臨界區中的代碼時,必須先申請鎖,申請成功,則可以執行這部分代碼,執行完成這部分代碼後釋放鎖。釋放鎖之前,其它任務無法再申請鎖,它們必須等待鎖被釋放。

假如某個任務一直持有鎖,其它任務將一直等待。因此,互斥鎖應當儘量快地釋放,這樣可以提高併發量。

簡單介紹完互斥鎖之後,再看tokio提供的互斥鎖。

tokio::sync::Mutex使用new()來創建互斥鎖,使用lock()來申請鎖,申請鎖成功時將返回MutexGuard,並通過drop的方式來釋放鎖。


上一篇
【Day10】- Rust(Tokio)
下一篇
【Day12】- Rust(Tokio)
系列文
NautilusTrader 架構解析:Rust 在高效能量化交易平台中的角色與優勢22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言